package hxy.bytecode.thread;

/**
 * @author eric
 * @link https://www.jianshu.com/p/088847580463
 */
public class DeadThead {
    public static void main(String[] args) {
        Object a = new Object();
        Object b = new Object();


        new Thread(() -> {
            synchronized (a) {
                System.out.println("I get a");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println("I want to get b");
                synchronized (b) {
                    System.out.println("I am a and   get b");
                }

            }
        }).start();

        new Thread(() -> {
            synchronized (b) {
                System.out.println("I get b");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println("I want to get a");
                synchronized (a) {
                    System.out.println("I am b and   get a");
                }

            }
        }).start();

        System.out.println("done");
    }
}
